package com.多线程07.demo23;

import org.omg.PortableServer.POA;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class ThreadPoolExecuterDemo03 {

    public static void main(String[] args) {
        /**
         * 参数1：核心线程数 5
         * 参数2：最大线程数 10
         * 参数3：空闲线程最大存活时间（数值）300
         * 参数4：空闲线程最大存活时间单位（数值）天
         * 参数5：任务队列
         * 参数6：创建线程的工厂
         * 参数7：拒绝策略
         *      策略1：丢弃任务并抛出异常，默认策略
         *      策略2：丢弃任务但不抛出异常
         *      策略3：抛弃队列中等待醉酒的任务，并把当前线程加进去
         *      策略4：绕过线程池直接调用线程的run方法执行任务
         */
        ThreadPoolExecutor poolExecutor = new ThreadPoolExecutor(5,
                                                            10,
                                                                2,
                                                                TimeUnit.DAYS,
                                                                new ArrayBlockingQueue<>(10),
                                                                Executors.defaultThreadFactory(),
                                                                new ThreadPoolExecutor.AbortPolicy());
        poolExecutor.submit(()->{
            System.out.println("1111");
        });
        poolExecutor.submit(()->{
            System.out.println("1111");
        });

    }


}
